The present invention is directed to integrated circuits. More particularly, the invention provides a method and system for data transfer. More specifically, certain embodiments of the present invention provide a data transferring system that provides, among other things, clock synchronization and parallel buffering. For example, the data transferring system provides a controller for efficient and reliable parallel buffering. Certain embodiments of the present invention have been used for data bus of computer system. But it would be recognized that the invention has a much broader range of applicability.
Integrated circuits or “ICs” have evolved from a handful of interconnected devices fabricated on a single chip of silicon to millions of devices. Current ICs provide performance and complexity far beyond what was originally imagined. In order to achieve improvements in complexity and circuit density (i.e., the number of devices capable of being packed onto a given chip area), the size of the smallest device feature, also known as the device “geometry”, has become smaller with each generation of ICs. Semiconductor devices are now being fabricated with features less than a quarter of a micron across.
Increasing circuit density has not only improved the complexity and performance of ICs but has also provided lower cost parts to the consumer. An IC fabrication facility can cost hundreds of millions, or even billions, of dollars. Each fabrication facility will have a certain throughput of wafers, and each wafer will have a certain number of ICs on it. Therefore, by making the individual devices of an IC smaller, more devices may be fabricated on each wafer, thus increasing the output of the fabrication facility. Making devices smaller is very challenging, as a given process, device layout, and/or system design often work down to only a certain feature size.
Integrated circuits have a variety of applications. For example, integrated circuits have been utilized for data transferring applications. Over the years, various data transferring techniques have been developed. For example, synchronous and asynchronous data transfer techniques have been widely utilized for various applications. As with any data transferring applications, there is always entity transmitting information, an entity receiving information, and a communication link (e.g., wired communication like, wireless communication, etc.). For example, to ensure accurate and efficient synchronous data transferring, it is often important to synchronize the data transfer with clock signals between the receiving and transmitting entities. Various conventional techniques have been developed for proper synchronization.
Another challenge in data transfer has been to prevent data overflow or underflow during data transfer. In the past, conventional techniques have applied various buffering methodologies to address possible overflow and/or underflow problems. Unfortunately, these techniques for data transferring have been inadequate.
From the above, it is desirable to have an improved technique for data transfer with buffer control.